export const state = () => ({
  userInfo: {
    token: '',
    user: {}
  }
})

export const mutations = {
  // 保存用户信息到state
  setUserInfo(state, data) {
    state.userInfo = data;
  },
};

export const actions = {
  // 这个函数中可以来执行异步操作，拿到异步操作的结果，调用mutaitons中的方法，达到为state中的成员赋值的目的
  // 这个函数中可以来执行异步操作，拿到异步操作的结果，调用mutaitons中的方法，达到为state中的成员赋值的目的
  setUserInfoAction(store, data) {
    // store就是当前的仓库对象，里面的commot函数可以调用mutaitons中的成员
    // 调用mutations中的成员
    // 调用mutations中的成员
    store.commit('setUserInfo', data)
  },
  // 将登陆操作封装到actions中
  loginAction({
    commit
  }, canshu) {
    // 异步请示
    return this.$axios({
      method: "post",
      url: "/accounts/login",
      data: canshu
    }).then(res => {
      // 如果在user仓库外部调用actions或者mutations中的方法，则需要使用this.$store
      // 如果在同一个仓库中进行方法的调用，则不需要再写this.$store了
      // 同时在同一个仓库中调用方法，也不需要再指定仓库，默认就是当前仓库
      // this.$store.commit('user/setUserInfo',res.data)
      commit('setUserInfo', res.data)
      // 如果在外围还需要使用这个值，则必须返回
      return res
    })
  }
}
